實作一個置頂的 Navbar。
利用 fixed
製作一個會黏在頂部的 nav
.fixed-nav nav {
position: fixed;
box-shadow: 0 5px rgba(0,0,0,0.1);
}
在有 fixed-nav
時,logo 寬度從 0 改成 500px
在有 fixed-nav
時,scale 從 0.98 改成 1
取得 nav
元素
利用 offsetTop
取得 nav
上方的 Y點
監聽 window
是否有滾動,即觸發 func
: fixNav
先 console
看看,取到的 nav上方點
和整個視窗的 scrollY
如果 window.scrollY
大於 nav上方點
就把 nav 加上 fixed-nav
的 class,沒有就移除 remove
if (window.scrollY >= topOfNav) {
document.body.classList.add('fixed-nav');
} else {
document.body.classList.remove('fixed-nav');
}
此時在滾動觸發時會卡一個 nav
的高度,讓滾動時突然跑一個高度又消失,所以利用 offsetHeight
得到 nav
的高度, 在 window.scrollY
大於 nav上方點
就把 nav 高度加上去,沒有就為空值
document.body.style.paddingTop = nav.offsetHeight + 'px';
動態抓取高度,新增一個 resize
事件
監聽 window
是否有變更寬度,即觸發 func
: resizeHandler
function resizeHandler() {
}
window.addEventListener('resize', resizeHandler);
抓取 nav上方點
topOfNav = nav.offsetTop;